package com.cn.example;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.w3c.dom.Document;
import org.xml.sax.SAXException;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.io.StringReader;

@Controller
public class FreeMarkerController {

    //这个要放到templates中才能使用
    //直接访问 http://localhost:8080/ 时，Spring Boot 会自动加载 static/index.html 文件。
    //如果根路径 / 同时有 FreeMarker 模板和静态资源（index.ftlh 和 index.html），默认情况下，FreeMarker 模板的优先级更高。
    //如果您希望静态资源优先于模板文件，可以调整 application.properties 配置：
    //spring.web.resources.chain.strategy.content.enabled=false
    //spring.mvc.view.prefix=/templates/  # 设置模板路径为非默认

    //@GetMapping("/")
    //public String index() {
    //    return "index"; // 返回 index.html 模板
    //}

    @PostMapping("/processXml2")
    public String processXml(@RequestBody String xmlData, Model model) throws ParserConfigurationException, IOException, SAXException {
        // 解析 XML 数据
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();
        Document doc = builder.parse(new org.xml.sax.InputSource(new StringReader(xmlData)));

        // 获取用户信息
        String name = doc.getElementsByTagName("name").item(0).getTextContent();
        String age = doc.getElementsByTagName("age").item(0).getTextContent();
        System.out.println("name:"+name);
        System.out.println("age:"+age);

        // 模拟处理并返回修改后的数据
        model.addAttribute("name", "夏夏");
        model.addAttribute("age", 18);

        // 返回 result.ftlh 模板
        return "result";
    }
}